import os
import pandas as pd


def merge_excel_files(folder_path, output_file):
    """
    合并指定文件夹下的所有 Excel 文件到一个文件中。

    参数:
        folder_path (str): 包含 Excel 文件的文件夹路径。
        output_file (str): 输出合并后的 Excel 文件路径。
    """
    # 获取文件夹中所有的 Excel 文件
    excel_files = [f for f in os.listdir(folder_path) if f.endswith('.xlsx') or f.endswith('.xls')]

    if not excel_files:
        print("文件夹中没有找到 Excel 文件！")
        return

    # 创建一个空的 DataFrame 用于存储合并的数据
    combined_data = pd.DataFrame()

    # 遍历每个 Excel 文件并读取数据
    for file in excel_files:
        file_path = os.path.join(folder_path, file)
        try:
            data = pd.read_excel(file_path)
            combined_data = pd.concat([combined_data, data], ignore_index=True)
            print(f"已成功读取: {file}")
        except Exception as e:
            print(f"读取文件 {file} 时出错: {e}")

    # 将合并后的数据保存到输出文件
    combined_data.to_excel(output_file, index=False)
    print(f"合并完成！结果已保存到: {output_file}")


# 使用示例
if __name__ == "__main__":
    # 指定包含 Excel 文件的文件夹路径
    folder_path = "./data"  # 替换为你的文件夹路径
    # 指定输出文件路径
    output_file = "./合并/merged_output.xlsx"  # 替换为你希望保存的文件路径

    # 调用函数合并表格
    merge_excel_files(folder_path, output_file)